package pers.tz.题目.leetcode.树;

import pers.tz.common.TreeNode;
import pers.tz.common.TreeUtils;

/**
 * @author irony
 * @date 2024-03-17
 */
public class leetcode_0226_翻转二叉树 {
//给你一棵二叉树的根节点 root ，翻转这棵二叉树，并返回其根节点。
//
// 示例 1：
//输入：root = [4,2,7,1,3,6,9]
//输出：[4,7,2,9,6,3,1]
//
// 示例 2：
//输入：root = [2,1,3]
//输出：[2,3,1]
//
// 示例 3：
//输入：root = []
//输出：[]
//
// 提示：
// 树中节点数目范围在 [0, 100] 内
// -100 <= Node.val <= 100
    public static void main(String[] args) {
        TreeNode treeNode = TreeUtils.generateRandomTree();
        TreeUtils.preorderPrint(treeNode);

        System.out.println();
        TreeNode head = invertTree(treeNode);
        TreeUtils.preorderPrint(head);
    }

    public static TreeNode invertTree(TreeNode root) {
        if (root == null) {
            return root;
        }

        TreeNode left = invertTree(root.left);
        TreeNode right = invertTree(root.right);

        root.left = right;
        root.right = left;

        return root;
    }
}
